package com.code.gen;

import com.code.gen.model.DataModel;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;


public class DynamicCodeGen {
    /**
     * 需求分析：
     * 1：动态实现代码作者信息
     * 2：是否循环
     * 3：输出结果要进行改变
     */
    public static void main(String[] args) throws Exception {
        String inputPath = System.getProperty("user.dir")+ File.separator+"AI_CodeGen/src/main/resources/templates";
        String outPath = System.getProperty("user.dir")+ File.separator+"code_gen_demo/src/main/java/org/example/Templates.java";
        doGenCode(inputPath,outPath);
    }

    private static void doGenCode(String inputPath,String outPath) throws IOException, TemplateException {
        // new 出 Configuration 对象，参数为 FreeMarker 版本号
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_32);

        // 指定模板文件所在的路径
        configuration.setDirectoryForTemplateLoading(new File(inputPath));

        // 设置模板文件使用的字符集
        configuration.setDefaultEncoding("utf-8");
        Template template = configuration.getTemplate("CodeTemplates.java.ftl");
        DataModel dataModel = new DataModel();
        dataModel.setAuthor("lfc");
        dataModel.setLoop(true);
        dataModel.setResult("循环输出结果应为");
        dataModel.setClassName("Templates");
        Writer fileWriter = new FileWriter(outPath);

        template.process(dataModel,fileWriter);

        fileWriter.close();
    }
}
